home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_05 / allison / date2.c < prev    next >
C/C++ Source or Header  |  1995-03-12  |  1KB  |  53 lines

  1. LISTING 5 - Implementation for Listing 4
  2. /* date2.c */
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include "date2.h"
  7.  
  8. struct Date
  9. {
  10.     int month;
  11.     int day;
  12.     int year;
  13. };
  14.  
  15. static const char *month_text[] =
  16.     {"Bad month", "January", "February", "March", "April",
  17.     "May", "June", "July", "August", "September", "October",
  18.     "November", "December"};
  19.  
  20. Date *date_create(int m, int d, int y)
  21. {
  22.     Date *dp = malloc(sizeof(Date));
  23.     if (dp == NULL)
  24.         return NULL;
  25.  
  26.     dp->month = m;
  27.     dp->day = d;
  28.     dp->year = y;
  29.     return dp;
  30. }
  31.  
  32. char *date_format(const Date *dp, char *buf)
  33. {
  34.     sprintf(buf,"%s %d, %d", 
  35.             month_text[dp->month],dp->day,dp->year);
  36.     return buf;
  37. }
  38.  
  39. int date_compare(const Date *dp1, const Date *dp2)
  40. {
  41.     int result = dp1->year - dp2->year;
  42.     if (result == 0)
  43.         result = dp1->month - dp2->month;
  44.     if (result == 0)
  45.         result = dp1->day - dp2->day;
  46.     return result;
  47. }
  48.  
  49. void date_destroy(Date *dp)
  50. {
  51.     free(dp);
  52. }
  53.